home *** CD-ROM | disk | FTP | other *** search
/ Software of the Month Club 2000 October / Software of the Month - Ultimate Collection Shareware 277.iso / pc / PROGRAMS / UTILITY / WINLINUX / DATA1.CAB / usr_-_Usr_Files / INCLUDE / VGA.H < prev    next >
C/C++ Source or Header  |  1999-09-17  |  13KB  |  376 lines

  1. /* VGAlib version 1.2 - (c) 1993 Tommy Frandsen                    */
  2. /*                                                                 */
  3. /* This library is free software; you can redistribute it and/or   */
  4. /* modify it without any restrictions. This library is distributed */
  5. /* in the hope that it will be useful, but without any warranty.   */
  6.  
  7. /* Extended for svgalib by Harm Hanemaayer and Hartmut Schirmer */
  8.  
  9. #ifndef VGA_H
  10. #define VGA_H
  11.  
  12. #include <sys/types.h>
  13. #include <sys/time.h>
  14.  
  15. #ifdef __cplusplus
  16. extern "C"
  17. {
  18. #endif
  19.  
  20. #define TEXT          0        /* Compatible with VGAlib v1.2 */
  21. #define G320x200x16  1
  22. #define G640x200x16  2
  23. #define G640x350x16  3
  24. #define G640x480x16  4
  25. #define G320x200x256 5
  26. #define G320x240x256 6
  27. #define G320x400x256 7
  28. #define G360x480x256 8
  29. #define G640x480x2   9
  30.  
  31. #define G640x480x256 10
  32. #define G800x600x256 11
  33. #define G1024x768x256 12
  34.  
  35. #define G1280x1024x256 13    /* Additional modes. */
  36.  
  37. #define G320x200x32K 14
  38. #define G320x200x64K 15
  39. #define G320x200x16M 16
  40. #define G640x480x32K 17
  41. #define G640x480x64K 18
  42. #define G640x480x16M 19
  43. #define G800x600x32K 20
  44. #define G800x600x64K 21
  45. #define G800x600x16M 22
  46. #define G1024x768x32K 23
  47. #define G1024x768x64K 24
  48. #define G1024x768x16M 25
  49. #define G1280x1024x32K 26
  50. #define G1280x1024x64K 27
  51. #define G1280x1024x16M 28
  52.  
  53. #define G800x600x16 29
  54. #define G1024x768x16 30
  55. #define G1280x1024x16 31
  56.  
  57. #define G720x348x2 32        /* Hercules emulation mode */
  58.  
  59. #define G320x200x16M32 33    /* 32-bit per pixel modes. */
  60. #define G640x480x16M32 34
  61. #define G800x600x16M32 35
  62. #define G1024x768x16M32 36
  63. #define G1280x1024x16M32 37
  64.  
  65. /* additional resolutions */
  66. #define G1152x864x16 38
  67. #define G1152x864x256 39
  68. #define G1152x864x32K 40
  69. #define G1152x864x64K 41
  70. #define G1152x864x16M 42
  71. #define G1152x864x16M32 43
  72.  
  73. #define G1600x1200x16 44
  74. #define G1600x1200x256 45
  75. #define G1600x1200x32K 46
  76. #define G1600x1200x64K 47
  77. #define G1600x1200x16M 48
  78. #define G1600x1200x16M32 49
  79.  
  80. #define __GLASTMODE G1600x1200x16M32
  81. #define GLASTMODE vga_lastmodenumber()
  82.  
  83.     extern int vga_setmode(int mode);
  84.     extern int vga_hasmode(int mode);
  85.     extern int vga_setflipchar(int c);
  86.  
  87.     extern int vga_clear(void);
  88.     extern int vga_flip(void);
  89.  
  90.     extern int vga_getxdim(void);
  91.     extern int vga_getydim(void);
  92.     extern int vga_getcolors(void);
  93.  
  94.     extern int vga_setpalette(int index, int red, int green, int blue);
  95.     extern int vga_getpalette(int index, int *red, int *green, int *blue);
  96.     extern int vga_setpalvec(int start, int num, int *pal);
  97.     extern int vga_getpalvec(int start, int num, int *pal);
  98.  
  99.     extern int vga_screenoff(void);
  100.     extern int vga_screenon(void);
  101.  
  102.     extern int vga_setcolor(int color);
  103.     extern int vga_drawpixel(int x, int y);
  104.     extern int vga_drawline(int x1, int y1, int x2, int y2);
  105.     extern int vga_drawscanline(int line, unsigned char *colors);
  106.     extern int vga_drawscansegment(unsigned char *colors, int x, int y, int length);
  107.     extern int vga_getpixel(int x, int y);    /* Added. */
  108.     extern int vga_getscansegment(unsigned char *colors, int x, int y, int length);
  109.  
  110.     extern int vga_getch(void);
  111.  
  112.     extern int vga_dumpregs(void);
  113.  
  114.  
  115. /* Extensions to VGAlib v1.2: */
  116.  
  117. /* blit flags */
  118. #define HAVE_BITBLIT 1
  119. #define HAVE_FILLBLIT 2
  120. #define HAVE_IMAGEBLIT 4
  121. #define HAVE_HLINELISTBLIT 8
  122. #define HAVE_BLITWAIT 16
  123.  
  124. /* other flags */
  125. #define HAVE_RWPAGE 1        /* vga_setreadpage() / vga_setwritepage() available */
  126. #define IS_INTERLACED 2        /* mode is interlaced */
  127. #define IS_MODEX 4        /* ModeX style 256 colors */
  128. #define IS_DYNAMICMODE 8    /* Dynamic defined mode */
  129. #define CAPABLE_LINEAR 16    /* Can go to linear addressing mode. */
  130. #define IS_LINEAR 32        /* Linear addressing enabled. */
  131. #define EXT_INFO_AVAILABLE 64    /* Returned modeinfo contains valid extended fields */
  132. #define RGB_MISORDERED 128    /* Mach32 32bpp uses 0BGR instead of BGR0. */
  133.     /* As of this version 1.25 also used to signal if real RGB
  134.        (red first in memory) is used instead of BGR (Mach32 DAC 4) */
  135. #define HAVE_EXT_SET 256    /* vga_ext_set() available */
  136.  
  137.     typedef struct {
  138.     int width;
  139.     int height;
  140.     int bytesperpixel;
  141.     int colors;
  142.     int linewidth;        /* scanline width in bytes */
  143.     int maxlogicalwidth;    /* maximum logical scanline width */
  144.     int startaddressrange;    /* changeable bits set */
  145.     int maxpixels;        /* video memory / bytesperpixel */
  146.     int haveblit;        /* mask of blit functions available */
  147.     int flags;        /* other flags */
  148.  
  149.     /* Extended fields: */
  150.  
  151.     int chiptype;        /* Chiptype detected */
  152.     int memory;        /* videomemory in KB */
  153.     int linewidth_unit;    /* Use only a multiple of this as parameter for set_logicalwidth and
  154.                    set_displaystart */
  155.     char *linear_aperture;    /* points to mmap secondary mem aperture of card (NULL if unavailable) */
  156.     int aperture_size;    /* size of aperture in KB if size>=videomemory. 0 if unavail */
  157.     void (*set_aperture_page) (int page);
  158.     /* if aperture_size<videomemory select a memory page */
  159.     void *extensions;    /* points to copy of eeprom for mach32 */
  160.     /* depends from actual driver/chiptype.. etc. */
  161.     } vga_modeinfo;
  162.  
  163.     extern vga_modeinfo *vga_getmodeinfo(int mode);
  164.     extern int vga_getdefaultmode(void);
  165.     extern int vga_getcurrentmode(void);
  166.     extern int vga_getcurrentchipset(void);
  167.     extern char *vga_getmodename(int mode);
  168.     extern int vga_getmodenumber(char *name);
  169.     extern int vga_lastmodenumber(void);
  170.  
  171.     extern unsigned char *graph_mem;
  172.     extern unsigned char *vga_getgraphmem(void);
  173.  
  174.     extern void vga_setpage(int p);
  175.     extern void vga_setreadpage(int p);
  176.     extern void vga_setwritepage(int p);
  177.     extern void vga_setlogicalwidth(int w);
  178.     extern void vga_setdisplaystart(int a);
  179.     extern void vga_waitretrace(void);
  180.     extern int vga_claimvideomemory(int n);
  181.     extern void vga_disabledriverreport(void);
  182.     extern int vga_setmodeX(void);
  183.     extern int vga_init(void);    /* Used to return void in svgalib <= 1.12. */
  184.     extern int vga_getmousetype(void);
  185.     extern int vga_getmonitortype(void);
  186.     extern void vga_setmousesupport(int s);
  187.     extern void vga_lockvc(void);
  188.     extern void vga_unlockvc(void);
  189.     extern int vga_getkey(void);
  190.     extern int vga_oktowrite(void);
  191.     extern void vga_copytoplanar256(unsigned char *virtualp, int pitch,
  192.                   int voffset, int vpitch, int w, int h);
  193.     extern void vga_copytoplanar16(unsigned char *virtualp, int pitch,
  194.                    int voffset, int vpitch, int w, int h);
  195.     extern void vga_copytoplane(unsigned char *virtualp, int pitch,
  196.                int voffset, int vpitch, int w, int h, int plane);
  197.     extern int vga_setlinearaddressing(void);
  198.     extern void vga_safety_fork(void (*shutdown_routine) (void));
  199.  
  200.  
  201. #ifdef EGA            /* Kernel headers may define this. */
  202. #undef EGA
  203. #endif
  204.  
  205. #define UNDEFINED    0
  206. #define VGA        1
  207. #define ET4000        2
  208. #define CIRRUS        3
  209. #define TVGA8900    4
  210. #define OAK        5
  211. #define EGA        6
  212. #define S3        7
  213. #define ET3000        8
  214. #define MACH32        9
  215. #define GVGA6400    10
  216. #define ARK        11
  217. #define ATI        12
  218. #define ALI        13
  219. #define MACH64        14
  220. #define CHIPS        15
  221. #define APM             16
  222. #define NV3        17
  223. #define ET6000        18
  224. #define VESA        19
  225. #define MX              20
  226. #define PARADISE    21
  227.  
  228.     /* Hor. sync: */
  229. #define MON640_60    0    /* 31.5 KHz (standard VGA) */
  230. #define MON800_56    1    /* 35.1 KHz (old SVGA) */
  231. #define MON1024_43I    2    /* 35.5 KHz (low-end SVGA, 8514) */
  232. #define MON800_60    3    /* 37.9 KHz (SVGA) */
  233. #define MON1024_60    4    /* 48.3 KHz (SVGA non-interlaced) */
  234. #define MON1024_70    5    /* 56.0 KHz (SVGA high frequency) */
  235. #define MON1024_72    6
  236.  
  237.     extern void vga_setchipset(int c);
  238.     extern void vga_setchipsetandfeatures(int c, int par1, int par2);
  239.     extern void vga_gettextfont(void *font);
  240.     extern void vga_puttextfont(void *font);
  241.     extern void vga_settextmoderegs(void *regs);
  242.     extern void vga_gettextmoderegs(void *regs);
  243.  
  244.     extern int vga_white(void);
  245.     extern int vga_setegacolor(int c);
  246.     extern int vga_setrgbcolor(int r, int g, int b);
  247.  
  248.     extern void vga_bitblt(int srcaddr, int destaddr, int w, int h, int pitch);
  249.     extern void vga_imageblt(void *srcaddr, int destaddr, int w, int h, int pitch);
  250.     extern void vga_fillblt(int destaddr, int w, int h, int pitch, int c);
  251.     extern void vga_hlinelistblt(int ymin, int n, int *xmin, int *xmax, int pitch, int c);
  252.     extern void vga_blitwait(void);
  253.     extern int vga_ext_set(unsigned what,...);
  254.     extern int vga_accel(unsigned operation,...);
  255.  
  256. /* Valid values for what in vga_ext_set: */
  257. #define VGA_EXT_AVAILABLE    0    /* supported flags */
  258. #define VGA_EXT_SET        1    /* set flag(s) */
  259. #define VGA_EXT_CLEAR        2    /* clear flag(s) */
  260. #define VGA_EXT_RESET        3    /* set/clear flag(s) */
  261. #define VGA_EXT_PAGE_OFFSET    4    /* set an offset for all subsequent vga_set*page() calls */
  262.     /* Like: vga_ext_set(VGA_EXT_PAGE_OFFSET, 42);           */
  263.     /* returns the previous offset value.                    */
  264. #define VGA_EXT_FONT_SIZE    5    /* the (maximal) size of the font buffer */
  265.  
  266. /* Valid params for VGA_EXT_AVAILABLE: */
  267. #define VGA_AVAIL_SET        0    /* vga_ext_set sub funcs */
  268. #define VGA_AVAIL_ACCEL        1    /* vga_accel sub funcs */
  269. #define VGA_AVAIL_FLAGS        2    /* known flags for VGA_EXT_SET */
  270. #define VGA_AVAIL_ROP        3    /* vga_accel ROP sub funcs */
  271. #define VGA_AVAIL_TRANSPARENCY    4    /* vga_accel TRANSPARENCY sub funcs */
  272. #define VGA_AVAIL_ROPMODES    5    /* vga_accel ROP modes supported funcs */
  273. #define VGA_AVAIL_TRANSMODES    6    /* vga_accel TRANSPARENCY modes supported */
  274.  
  275. /* Known flags to vga_ext_set() */
  276. #define VGA_CLUT8        1    /* 8 bit DAC entries */
  277.  
  278. /* Acceleration interface. */
  279.  
  280. /* Accel operations. */
  281. #define ACCEL_FILLBOX            1    /* Simple solid fill. */
  282. #define ACCEL_SCREENCOPY        2    /* Simple screen-to-screen BLT. */
  283. #define ACCEL_PUTIMAGE            3    /* Straight image transfer. */
  284. #define ACCEL_DRAWLINE            4    /* General line draw. */
  285. #define ACCEL_SETFGCOLOR        5    /* Set foreground color. */
  286. #define ACCEL_SETBGCOLOR        6    /* Set background color. */
  287. #define ACCEL_SETTRANSPARENCY        7    /* Set transparency mode. */
  288. #define ACCEL_SETRASTEROP        8    /* Set raster-operation. */
  289. #define ACCEL_PUTBITMAP            9    /* Color-expand bitmap. */
  290. #define ACCEL_SCREENCOPYBITMAP        10    /* Color-expand from screen. */
  291. #define ACCEL_DRAWHLINELIST        11    /* Draw horizontal spans. */
  292. #define ACCEL_SETMODE            12    /* Set blit strategy. */
  293. #define ACCEL_SYNC            13    /* Wait for blits to finish. */
  294. #define ACCEL_SETOFFSET            14    /* Set screen offset */
  295. #define ACCEL_SCREENCOPYMONO        15    /* Monochrome screen-to-screen BLT. */
  296. #define ACCEL_POLYLINE            16    /* Draw multiple lines. */
  297. #define ACCEL_POLYHLINE            17    /* Draw multiple horizontal spans. */
  298. #define ACCEL_POLYFILLMODE        18    /* Set polygon mode. */
  299.  
  300. /* Corresponding bitmask. */
  301. #define ACCELFLAG_FILLBOX        0x1    /* Simple solid fill. */
  302. #define ACCELFLAG_SCREENCOPY        0x2    /* Simple screen-to-screen BLT. */
  303. #define ACCELFLAG_PUTIMAGE        0x4    /* Straight image transfer. */
  304. #define ACCELFLAG_DRAWLINE        0x8    /* General line draw. */
  305. #define ACCELFLAG_SETFGCOLOR        0x10    /* Set foreground color. */
  306. #define ACCELFLAG_SETBGCOLOR        0x20    /* Set background color. */
  307. #define ACCELFLAG_SETTRANSPARENCY    0x40    /* Set transparency mode. */
  308. #define ACCELFLAG_SETRASTEROP        0x80    /* Set raster-operation. */
  309. #define ACCELFLAG_PUTBITMAP        0x100    /* Color-expand bitmap. */
  310. #define ACCELFLAG_SCREENCOPYBITMAP    0x200    /* Color-exand from screen. */
  311. #define ACCELFLAG_DRAWHLINELIST        0x400    /* Draw horizontal spans. */
  312. #define ACCELFLAG_SETMODE        0x800    /* Set blit strategy. */
  313. #define ACCELFLAG_SYNC            0x1000    /* Wait for blits to finish. */
  314. #define ACCELFLAG_SETOFFSET        0x2000    /* Set screen offset */
  315. #define ACCELFLAG_SCREENCOPYMONO    0x4000    /* Monochrome screen-to-screen BLT. */
  316. #define ACCELFLAG_POLYLINE        0x8000    /* Draw multiple lines. */
  317. #define ACCELFLAG_POLYHLINE        0x10000    /* Draw multiple horizontal spans. */
  318. #define ACCELFLAG_POLYFILLMODE        0x20000    /* Set polygon mode. */
  319.  
  320. /* Mode for SetTransparency. */
  321. #define DISABLE_TRANSPARENCY_COLOR    0
  322. #define ENABLE_TRANSPARENCY_COLOR    1
  323. #define DISABLE_BITMAP_TRANSPARENCY    2
  324. #define ENABLE_BITMAP_TRANSPARENCY    3
  325.  
  326. /* Flags for SetMode (accelerator interface). */
  327. #define BLITS_SYNC            0
  328. #define BLITS_IN_BACKGROUND        0x1
  329.  
  330. /* Raster ops. */
  331. #define ROP_COPY            0    /* Straight copy. */
  332. #define ROP_OR                1    /* Source OR destination. */
  333. #define ROP_AND                2    /* Source AND destination. */
  334. #define ROP_XOR                3    /* Source XOR destination. */
  335. #define ROP_INVERT            4    /* Invert destination. */
  336.  
  337. /* For the poly funcs */
  338. #define ACCEL_START            1
  339. #define ACCEL_END            2
  340.  
  341. /*
  342.  * wait for keypress, mousemove, I/O, timeout. cf. select (3) for details on
  343.  * all parameters execept which.
  344.  * NULL is a valid argument for any of the ptrs.
  345.  */
  346.  
  347.     extern int vga_waitevent(int which, fd_set * in, fd_set * out, fd_set * except,
  348.                  struct timeval *timeout);
  349.  
  350. /*
  351.  * valid values for what ( | is valid to combine them )
  352.  */
  353. #define VGA_MOUSEEVENT    1
  354. #define VGA_KEYEVENT    2
  355.  
  356. /*
  357.  * return value >= has bits set for mouse/keyboard events detected.
  358.  * mouse and raw keyboard events are already handled and their bits removed
  359.  * from *in when vga_waitevent returns.
  360.  * VGA_KEYEVENT relates to vga_getch NOT vga_getkey.
  361.  * return values < 0 signal errors. In this case check errno.
  362.  */
  363.  
  364. /* Background running */
  365. extern void vga_runinbackground(int stat, ...);
  366. #define VGA_GOTOBACK -1
  367. #define VGA_COMEFROMBACK -2
  368. extern int vga_runinbackground_version(void);
  369.  
  370.  
  371. #ifdef __cplusplus
  372. }
  373.  
  374. #endif
  375. #endif                /* VGA_H */
  376.